home *** CD-ROM | disk | FTP | other *** search
/ LiquidLibrary 2004 September / LiquidLibrary 2004 Sep - Disc 2.iso / pc / Portfolio Browser / Filters / PSI_ETC / PDFOPS.PS < prev    next >
Text File  |  2003-01-03  |  10KB  |  326 lines

  1. /@bd{bind def}bind def
  2. /@bp{save mark}@bd
  3. /@ep{showpage cleartomark restore}@bd
  4.  
  5. /spFunc
  6. {
  7.   spD/Range get length 2 div/n_ exch def
  8.   spD/Size get 0 get 1 sub mul/n__ exch def
  9.   1 1 n_{n__ n_ mul add 1 sub spA exch cvi get 255 div}for
  10. }@bd
  11.  
  12. /ReplaceCS
  13. {
  14.   dup dup 0 get
  15.   dup/CalGray eq
  16.   {pop/DeviceGray}
  17.   {
  18.     dup dup/CalRGB eq exch/Lab eq or
  19.     {pop/DeviceRGB}
  20.     {
  21.       dup/CalCMYK eq
  22.       {pop/DeviceCMYK}if
  23.     }ifelse
  24.   }ifelse
  25.   0 exch put
  26. }@bd
  27.  
  28. /setcolorspace
  29. {
  30.   dup type/arraytype eq
  31.   {
  32.     dup 0 get/Indexed eq
  33.     {
  34.       aload length 5 eq{exch pop}if
  35.       3 -1 roll
  36.       dup type/arraytype eq not{[exch]}if
  37.       ReplaceCS 3 1 roll [5 1 roll]
  38.     }
  39.     {ReplaceCS}ifelse
  40.     dup 0 get/Separation eq
  41.     {aload pop/spA exch def/spD exch def//spFunc[5 1 roll]}if
  42.   }if
  43.   systemdict/setcolorspace get exec
  44. }@bd
  45.  
  46. /ChgEnc
  47. {
  48.   /code 0 def
  49.   {
  50.     dup type /integertype eq
  51.     {/code exch def}
  52.     {Encoding exch code exch put /code code 1 add def}ifelse
  53.   }forall
  54. }@bd
  55.  
  56. /ChangeEncoding
  57. {
  58.   Fonts 1 index get exch 3 1 roll
  59.   dup findfont
  60.   dup length dict begin
  61.     {1 index /FID ne {def}{pop pop}ifelse}forall
  62.     exch ChgEnc
  63.     currentdict
  64.   end
  65.   exch dup length string cvs dup length dup 3 add string dup 0 5 -1 roll putinterval
  66.   dup 3 -1 roll (-CE) putinterval cvn dup 3 1 roll exch definefont pop
  67.   Fonts-CE 3 1 roll def
  68. }@bd
  69.  
  70. /q{save mark}@bd
  71. /Q{cleartomark restore}@bd
  72. /cm{[7 1 roll]concat}@bd
  73. /d{setdash}@bd
  74. /i{setflat}@bd
  75. /j{setlinejoin}@bd
  76. /J{setlinecap}@bd
  77. /M{setmiterlimit}@bd
  78. /w{setlinewidth}@bd
  79. /gs{pop}@bd
  80. /_g{g1 setgray}@bd
  81. /g{/g1 exch def/_sc//_g def}@bd
  82. /_G{G1 setgray}@bd
  83. /G{/G1 exch def/_SC//_G def}@bd
  84. /_k{k1 k2 k3 k4 setcmykcolor}@bd
  85. /k{/k4 exch def/k3 exch def/k2 exch def/k1 exch def/_sc//_k def}@bd
  86. /_K{K1 K2 K3 K4 setcmykcolor}@bd
  87. /K{/K4 exch def/K3 exch def/K2 exch def/K1 exch def/_SC//_K def}@bd
  88. /_r{r1 r2 r3 setrgbcolor}@bd
  89. /rg{/r3 exch def/r2 exch def/r1 exch def/_sc//_r def}@bd
  90. /_R{R1 R2 R3 setrgbcolor}@bd
  91. /RG{/R3 exch def/R2 exch def/R1 exch def/_SC//_R def}@bd
  92. 0 g 0 G
  93. /ca_ 4 array def
  94. /CA_ 4 array def
  95. /__sc{cs_ setcolorspace ca aload pop setcolor}@bd
  96. /__SC{CS_ setcolorspace CA aload pop setcolor}@bd
  97. /IsCS_{2 index eq dup{exch pop}{pop}ifelse}@bd
  98. /IsCS{dup type/arraytype eq{pop true}
  99.   {save exch false(*)//IsCS_ 64 string /ColorSpaceFamily resourceforall
  100.   exch pop exch restore}ifelse}@bd
  101. /csNClrs_ 0 def
  102. /csNClrs{csNClrs_ 0 ne{pop csNClrs_}
  103.   {save exch setcolorspace mark currentcolor counttomark
  104.   /n_ exch def cleartomark n_ exch restore}ifelse}@bd
  105. /cs{dup IsCS not{CSpaces exch get}if/cs_ exch def
  106.   ca_ 0 cs_ csNClrs getinterval/ca exch def
  107.   cs_ setcolorspace currentcolor ca astore pop/_sc//__sc def}@bd
  108. /CS{dup IsCS not{CSpaces exch get}if/CS_ exch def
  109.   CA_ 0 CS_ csNClrs getinterval/CA exch def
  110.   CS_ setcolorspace currentcolor CA astore pop/_SC//__SC def}@bd
  111. /sc{ca_ 0 cs_ csNClrs getinterval/ca exch def ca astore pop/_sc//__sc def}@bd
  112. /SC{CA_ 0 CS_ csNClrs getinterval/CA exch def CA astore pop/_SC//__SC def}@bd
  113. /scn{cs_ 0 get/Pattern eq
  114.   {Patterns exch get dup/PaintType get 1 eq{1}{cs_ 1 get csNClrs 1 add}ifelse
  115.   /csNClrs_ exch def sc/csNClrs_ 0 def}{sc}ifelse}@bd
  116. /SCN{CS_ 0 get/Pattern eq
  117.   {Patterns exch get dup/PaintType get 1 eq{1}{CS_ 1 get csNClrs 1 add}ifelse
  118.   /csNClrs_ exch def SC/csNClrs_ 0 def}{SC}ifelse}@bd
  119. /ri{pop}@bd
  120. /m{moveto}@bd
  121. /l{lineto}@bd
  122. /c{curveto}@bd
  123. /v{currentpoint 6 -2 roll curveto}@bd
  124. /y{2 copy curveto}@bd
  125. /h{closepath}@bd
  126. /re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}@bd
  127. /_doClip 0 def
  128. /W{/_doClip 1 def}@bd
  129. /W*{/_doClip 2 def}@bd
  130. /n{_doClip 1 ge{_doClip 1 eq{clip}{eoclip}ifelse/_doClip 0 def}if newpath}@bd
  131. /S{_SC _doClip 1 ge{gsave stroke grestore n}{stroke}ifelse}@bd
  132. /s{h S}@bd
  133. /f{_sc _doClip 1 ge{gsave fill grestore n}{fill}ifelse}@bd
  134. /F{f}@bd
  135. /f*{_sc _doClip 1 ge{gsave eofill grestore n}{eofill}ifelse}@bd
  136. /B{_doClip/_doClip 0 def gsave f grestore gsave S grestore/_doClip exch def n}@bd
  137. /b{h B}@bd
  138. /B*{_doClip/_doClip 0 def gsave f* grestore gsave S grestore/_doClip exch def n}@bd
  139. /b*{h B*}@bd
  140. /_Tc 0 def/_Tw 0 def/_Th 1 def/_Tl 0 def/_Trm 0 def/_Tr 0 def
  141. /Tc{/_Tc exch def}@bd
  142. /Tw{/_Tw exch def}@bd
  143. /Tz{100 div /_Th exch def}@bd
  144. /TL{neg /_Tl exch def}@bd
  145. /Tf{/_Fs exch def dup Fonts-CE exch known
  146.   {Fonts-CE exch get}{dup Fonts exch known
  147.   {Fonts exch get}{pop/Helvetica}ifelse}ifelse/_Fn exch def}@bd
  148. /Tr{/_Trm exch def}@bd
  149. /Ts{/_Tr exch def}@bd
  150. /_Tm matrix def
  151. /_Tlm matrix def
  152. /_Rm matrix def
  153. /BT{1 0 0 1 0 0 Tm}@bd
  154. /ET{}@bd
  155. /Td{[1 0 0 1 7 -2 roll] _Tlm _Tm concatmatrix aload pop _Tlm astore pop}@bd
  156. /TD{dup neg TL Td}@bd
  157. /Tm{6 copy _Tm astore pop _Tlm astore pop 0 0 m}@bd
  158. /T*{0 _Tl Td}@bd
  159. /GetFtMtx{[_Fs _Th mul 0 0 _Fs 0 _Tr] _Tm _Rm concatmatrix}@bd
  160. /FtMtx{_Tm 3 get}@bd
  161. /SvCurPt{currentpoint _Tm 4 4 -1 roll _Tm 4 get add put _Tm 5 3 -1 roll
  162.   _Tm 5 get add put}@bd
  163. /rm0{_sc dup gsave show grestore}@bd
  164. /rm1{_SC dup gsave false charpath stroke grestore}@bd
  165. /rm2{rm0 rm1}@bd
  166. /rm3{}@bd
  167. /rm7{dup false charpath}@bd
  168. /rm4{rm0 rm7}@bd
  169. /rm5{rm1 rm7}@bd
  170. /rm6{rm2 rm7}@bd
  171. /TrmArray[//rm0//rm1//rm2//rm3//rm4//rm5//rm6//rm7]def
  172. /cshproc{currentpoint 3 -1 roll add 3 1 roll add _Tc FtMtx mul add
  173.   2 index 32 eq{_Tw FtMtx mul add}if exch
  174.   2 index 1 string dup 0 4 -1 roll put TrmArray _Trm
  175.   get exec pop moveto pop}@bd
  176. /CstShow{//cshproc exch cshow _Trm 3 gt{currentpoint W n moveto}if}@bd
  177. /StdShow{_sc _Tw 0 eq _Tc 0 eq and{show}
  178.   {_Tw FtMtx mul 0 32 _Tc FtMtx mul 0 6 -1 roll awidthshow}ifelse}@bd
  179. /ShowTxt{_Trm 0 eq{StdShow}{CstShow}ifelse}@bd
  180. /Tj{currentpoint 2 copy 5 2 roll n moveto _Fn findfont GetFtMtx makefont
  181.   CIDFonts _Fn known
  182.   { CIDFonts _Fn get userdict/.Registry 2 index/Registry get put
  183.     userdict/.Ordering 2 index/Ordering get put
  184.     userdict/.Supplement 3 -1 roll/Supplement get put
  185.     userdict/.CIDFont true put }
  186.   { userdict/.CIDFont false put }
  187.   ifelse
  188.   setfont ShowTxt SvCurPt moveto}@bd
  189. /'{T* Tj}@bd
  190. /"{3 -1 roll Tw exch Tc '}@bd
  191. /_TJ{dup type/stringtype eq{Tj}
  192.   {1000 div GetFtMtx 3 get mul neg _Tm 4 3 -1 roll _Tm 4 get add put}ifelse}@bd
  193. /TJ{//_TJ forall}@bd
  194. /Do{pop}@bd %???
  195. /PS{cvx exec}@bd
  196. /filt
  197. {
  198.   false exch
  199.   dup/DCTDecode eq 3 -1 roll or exch
  200.   dup/CCITTFaxDecode eq 3 -1 roll or exch
  201.   exch
  202.   {
  203.     1 index type/dicttype eq not
  204.     {<<>> exch}if
  205.   }if
  206.   filter
  207. }@bd
  208. /GetFilt
  209. {
  210.   dup/Filter known
  211.   {
  212.     dup/Filter get dup type/arraytype eq not{[exch]}if exch
  213.     dup/DecodeParms known
  214.     {
  215.       /DecodeParms get dup type/arraytype eq not{[exch]}if
  216.       currentfile
  217.       2 index length 1 1 3 -1 roll
  218.       {
  219.         1 sub 3 index 1 index get 3 index 3 -1 roll get
  220.         dup type/nulltype eq{pop}{exch}ifelse filt
  221.       }for
  222.       3 1 roll pop pop
  223.     }
  224.     {pop currentfile exch{filt}forall}ifelse
  225.   }
  226.   {pop currentfile}ifelse
  227. }@bd
  228. /GetFilt3
  229. {
  230.   dup/Filter known
  231.   {
  232.     dup/Filter get dup type/arraytype eq not{[exch]}if exch
  233.     dup/DecodeParms known
  234.     {
  235.       dup/DecodeParms get dup type/arraytype eq not{[exch]}if exch
  236.       /Buffer get
  237.       2 index length 1 1 3 -1 roll
  238.       {
  239.         1 sub 3 index 1 index get 3 index 3 -1 roll get
  240.         dup type/nulltype eq{pop}{exch}ifelse filter
  241.       }for
  242.       3 1 roll pop pop
  243.     }
  244.     {/Buffer get exch{filter}forall}ifelse
  245.   }
  246.   {/Buffer get}ifelse
  247. }@bd
  248. /ImgEat
  249. {
  250.   { currentfile read
  251.     { 69 eq
  252.       { currentfile read
  253.         {73 eq{exit}if}{exit}ifelse
  254.       }if
  255.     }
  256.     {exit}ifelse
  257.   }loop
  258. }@bd
  259. /ImgBuf 1 string def
  260. /ImgGet{id_/File get ImgBuf readstring pop}@bd
  261. /ImgGet3{id_/File get dup type/stringtype eq not{ImgBuf readstring pop}if}@bd
  262. /GenDecode
  263. {
  264.   id_/Decode known not
  265.   { currentcolorspace 0 get/Indexed eq
  266.     { id_/Decode[0
  267.       id_/BitsPerComponent get 2 exch exp 1 sub
  268.       ]put
  269.     }
  270.     { mark currentcolor counttomark/n_ exch def
  271.       cleartomark id_/Decode[n_{0 1}repeat] put
  272.     }ifelse
  273.   }if
  274. }@bd
  275. /SetCSpace{id_/ColorSpace get dup IsCS not{CSpaces exch get}if setcolorspace}@bd
  276. /BI{<</DataSource//ImgGet/ImageType 1}@bd
  277. /ID{>>/id_ exch def id_/ImageMatrix id_ /Width get id_ /Height get
  278.   exch[exch 0 0 4 index neg 0 7 -1 roll] put
  279.   id_ GetFilt id_/File 3 -1 roll put
  280.   id_/ImageMask known{id_/ImageMask get}{false}ifelse
  281.   {_sc GenDecode id_ imagemask}{SetCSpace GenDecode id_ image}ifelse
  282.   id_/File get currentfile eq not{id_/File get closefile}if ImgEat EI}@bd
  283. /EI{}@bd
  284. /BI3{<</DataSource//ImgGet3/ImageType 1}@bd
  285. /ID3{/Buffer}@bd
  286. /EI3{>>/id_ exch def id_/ImageMatrix id_ /Width get id_ /Height get
  287.   exch[exch 0 0 4 index neg 0 7 -1 roll] put
  288.   id_ GetFilt3 id_/File 3 -1 roll put
  289.   id_/ImageMask known{id_/ImageMask get}{false}ifelse
  290.   {_sc GenDecode id_ imagemask}{SetCSpace GenDecode id_ image}ifelse
  291.   id_/File get type/stringtype eq not{id_/File get closefile}if}@bd
  292. /mp{1 index/PaintProc 3 -1 roll put dup/Matrix get makepattern}@bd
  293. /d0{setcharwidth}@bd
  294. /d1{setcachedevice}@bd
  295. /BXlvl 0 def
  296. /BXhndlr {cleartomark mark} bind def
  297. /BX
  298. {
  299.   BXlvl 0 eq
  300.   {
  301.     /saveErrHndlr errordict /undefined get def
  302.     errordict /undefined /BXhndlr load put
  303.   } if
  304.   /BXlvl BXlvl 1 add def
  305.   mark
  306. } bind def
  307. /EX
  308. {
  309.   BXlvl 0 ne
  310.   {
  311.     /BXlvl BXlvl 1 sub def
  312.     cleartomark
  313.     BXlvl 0 eq
  314.     {errordict /undefined /saveErrHndlr load put} if
  315.   } if
  316. } bind def
  317. /BMC{pop}@bd
  318. /BDC{pop pop}@bd
  319. /EMC{}@bd
  320. /MP{pop}@bd
  321. /DP{pop pop}@bd
  322. /BF{gsave dup /Matrix get concat
  323.   /BBox get aload pop exch 3 index sub exch 2 index sub rectclip}@bd
  324. /EF{grestore}@bd
  325. /Fonts-CE <<>> def
  326.